/*
 * Controlador.h
 *
 */

#ifndef CONTROLADOR_H_
#define CONTROLADOR_H_

#include <signal.h>
#include "MemoriaCompartida/MemoriaCompartida.h"
#include "Seniales/SignalHandler.h"
#include "Semaforos/Semaforo.h"
#include "Pipes/Pipe.h"
#include "Constantes.h"
#include "Estructuras.h"
#include "Utils.h"
#include "Log.h"
#include "Llamada.h"

using namespace std;

class Controlador : public EventHandler {

private:

	Semaforos semaforos;
	Pipe* pipeLlamadas;
	pid_t pidAscensor;
	MemoriaCompartida<Llamada> memComp;

	void bloquearSeniales();
	void avisarAscensor(Llamada llamada);

public:

	Controlador( Semaforos semaforos, Pipe* pipeLlamadas, pid_t pidAscensor );
	virtual ~Controlador();
	int inicializar();
	void recibirLlamadas();
	int handleSignal ( int signum );

};

#endif /* CONTROLADOR_H_ */
